package com.example.thebasics;

import java.util.ArrayList;

import data.Categories;
import data.Lista;
import data.Produto;
import data.Utilizador;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.view.Menu;
import android.view.View;
import android.widget.ImageButton;
import android.widget.TextView;

public class CatActivity extends Activity {

	private Categories cat;
	private Lista array;
	private String nomeLista;
	private ArrayList<Lista> listas;
	private Utilizador utilizador;
	    
	private final static int CODE_REQUEST = 13;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.categorias);
		TextView nomeListaTV = (TextView) findViewById(R.id.textViewNomeDaListaCategorias);
		 
		listas = (ArrayList<Lista>) getIntent().getSerializableExtra("Listas");
		for (Lista p : listas) {
			System.out.println("Lista: " + p);
		}
		array = (Lista) getIntent().getSerializableExtra("ListaProdutos");
		utilizador = (Utilizador) getIntent().getSerializableExtra("Utilizador");
		System.out.println("Lista Produtos:" + array);
		nomeLista = getIntent().getStringExtra("NomeLista");
		System.out.println(nomeLista);
		nomeListaTV.setText("Lista: " + nomeLista);
		
		categoriasOncreate();
	}

	public void categoriasOncreate(){
		boolean mercTudoComprado = true;
		boolean bebTudoComprado = true;
		boolean fresTudoComprado = true;
		boolean lactTudoComprado = true;
		boolean congTudoComprado = true;
		boolean fruTudoComprado = true;
		boolean higTudoComprado = true;
		boolean outTudoComprado = true;
		
		for (Produto p : array.getProdutos()) {
			if (p.getCategoria().toString().equals(Categories.MERCEARIA.toString())) {
				System.out.println("Produto: " + p.getDescricao() + " Comprado? "+ p.isComprado());
				if (!p.isComprado()) {
					mercTudoComprado = false;
				}
			} else if (p.getCategoria().toString().equals(Categories.BEBIDAS.toString())) {
				System.out.println("Produto: " + p.getDescricao() + " Comprado? "+ p.isComprado());
				if (!p.isComprado()) {
					bebTudoComprado = false;
				}
			} else if (p.getCategoria().toString().equals(Categories.FRESCOS.toString())) {
				System.out.println("Produto: " + p.getDescricao() + " Comprado? "+ p.isComprado());
				if (!p.isComprado()) {
					fresTudoComprado = false;
				}
			} else if (p.getCategoria().toString().equals(Categories.LATICINIOS.toString())) {
				System.out.println("Produto: " + p.getDescricao() + " Comprado? "+ p.isComprado());
				if (!p.isComprado()) {
					lactTudoComprado = false;
				}
			} else if (p.getCategoria().toString().equals(Categories.CONGELADOS.toString())) {
				System.out.println("Produto: " + p.getDescricao() + " Comprado? "+ p.isComprado());
				if (!p.isComprado()) {
					congTudoComprado = false;
				}
			} else if (p.getCategoria().toString().equals(Categories.FRUTAS.toString())) {
				System.out.println("Produto: " + p.getDescricao() + " Comprado? "+ p.isComprado());
				if (!p.isComprado()) {
					fruTudoComprado = false;
				}
			} else if (p.getCategoria().toString().equals(Categories.HIGIENE.toString())) {
				System.out.println("Produto: " + p.getDescricao() + " Comprado? "+ p.isComprado());
				if (!p.isComprado()) {
					higTudoComprado = false;
				}
			} else if (p.getCategoria().toString().equals(Categories.OUTROS.toString())) {
				System.out.println("Produto: " + p.getDescricao() + " Comprado? "+ p.isComprado());
				if (!p.isComprado()) {
					outTudoComprado = false;
				}
			}
		}
		
		if(mercTudoComprado){
			mudarIcon_g(Categories.MERCEARIA.toString());
		}else{
			mudarIcon_o(Categories.MERCEARIA.toString());
		}
		
		if(bebTudoComprado){
			mudarIcon_g(Categories.BEBIDAS.toString());
		}else{
			mudarIcon_o(Categories.BEBIDAS.toString());
		}
		
		if(fresTudoComprado){
			mudarIcon_g(Categories.FRESCOS.toString());
		}else{
			mudarIcon_o(Categories.FRESCOS.toString());
		}
		
		if(lactTudoComprado){
			mudarIcon_g(Categories.LATICINIOS.toString());
		}else{
			mudarIcon_o(Categories.LATICINIOS.toString());
		}
		
		if(congTudoComprado){
			mudarIcon_g(Categories.CONGELADOS.toString());
		}else{
			mudarIcon_o(Categories.CONGELADOS.toString());
		}
		
		if(fruTudoComprado){
			mudarIcon_g(Categories.FRUTAS.toString());
		}else{
			mudarIcon_o(Categories.FRUTAS.toString());
		}
		
		if(higTudoComprado){
			mudarIcon_g(Categories.HIGIENE.toString());
		}else{
			mudarIcon_o(Categories.HIGIENE.toString());
		}
		
		if(outTudoComprado){
			mudarIcon_g(Categories.OUTROS.toString());
		}else{
			mudarIcon_o(Categories.OUTROS.toString());
		}
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.cat, menu);
		return true;
	}
	
	@Override 
	public void onActivityResult(int requestCode, int resultCode, Intent data) {     
	  super.onActivityResult(requestCode, resultCode, data); 
	  switch(requestCode) { 
	    case (CODE_REQUEST) : { 
	      if (resultCode == Activity.RESULT_OK) { 
	    	  	boolean tudoComprado = data.getBooleanExtra("TudoComprado", false);
	    	  	String cat = data.getStringExtra("Cat");
	    	  	array = (Lista) data.getSerializableExtra("ListaProdutosComprados");
	    	  	System.out.println("Foi tudo comprado? " + tudoComprado);
	    	  	System.out.println("Categoria Recebida? " + cat);
	    	  	if(tudoComprado){
	    	  		mudarIcon_g(cat);
	    	  	}else{
	    	  		mudarIcon_o(cat);
	    	  	}
	      } 
	      break; 
	    } 
	  } 
	}
	
	public void mudarIcon_o(String cat){
		System.out.println("Categoria: " + cat);
		if(Categories.MERCEARIA.toString().equals(cat)){
			ImageButton buttonMercearia = (ImageButton)findViewById(R.id.buttonMercearia);
			buttonMercearia.setImageResource(R.drawable.mercearia_o);
		}else if(Categories.BEBIDAS.toString().equals(cat)){
			ImageButton buttonMercearia = (ImageButton)findViewById(R.id.buttonBebidas);
			buttonMercearia.setImageResource(R.drawable.bebidas_o);
		}else if(Categories.FRESCOS.toString().equals(cat)){
			ImageButton buttonMercearia = (ImageButton)findViewById(R.id.buttonFrescos);
			buttonMercearia.setImageResource(R.drawable.frescos_o);
		}else if(Categories.LATICINIOS.toString().equals(cat)){
			ImageButton buttonMercearia = (ImageButton)findViewById(R.id.buttonLacticinios);
			buttonMercearia.setImageResource(R.drawable.lacticinios_o);
		}else if(Categories.CONGELADOS.toString().equals(cat)){
			ImageButton buttonMercearia = (ImageButton)findViewById(R.id.buttonCongelados);
			buttonMercearia.setImageResource(R.drawable.congelados_o);
		}else if(Categories.FRUTAS.toString().equals(cat)){
			ImageButton buttonMercearia = (ImageButton)findViewById(R.id.buttonFrutas);
			buttonMercearia.setImageResource(R.drawable.frutas_o);
		}else if(Categories.HIGIENE.toString().equals(cat)){
			ImageButton buttonMercearia = (ImageButton)findViewById(R.id.buttonHigiene);
			buttonMercearia.setImageResource(R.drawable.higiene_o);
		}else if(Categories.OUTROS.toString().equals(cat)){
			ImageButton buttonMercearia = (ImageButton)findViewById(R.id.buttonOutros);
			buttonMercearia.setImageResource(R.drawable.outros_o);
		}
	}
	
	public void mudarIcon_g(String cat){
		System.out.println("Categoria: " + cat);
		if(Categories.MERCEARIA.toString().equals(cat)){
			ImageButton buttonMercearia = (ImageButton)findViewById(R.id.buttonMercearia);
			buttonMercearia.setImageResource(R.drawable.mercearia_g);
		}else if(Categories.BEBIDAS.toString().equals(cat)){
			ImageButton buttonMercearia = (ImageButton)findViewById(R.id.buttonBebidas);
			buttonMercearia.setImageResource(R.drawable.bebidas_g);
		}else if(Categories.FRESCOS.toString().equals(cat)){
			ImageButton buttonMercearia = (ImageButton)findViewById(R.id.buttonFrescos);
			buttonMercearia.setImageResource(R.drawable.frescos_g);
		}else if(Categories.LATICINIOS.toString().equals(cat)){
			ImageButton buttonMercearia = (ImageButton)findViewById(R.id.buttonLacticinios);
			buttonMercearia.setImageResource(R.drawable.lacticinios_g);
		}else if(Categories.CONGELADOS.toString().equals(cat)){
			ImageButton buttonMercearia = (ImageButton)findViewById(R.id.buttonCongelados);
			buttonMercearia.setImageResource(R.drawable.congelados_g);
		}else if(Categories.FRUTAS.toString().equals(cat)){
			ImageButton buttonMercearia = (ImageButton)findViewById(R.id.buttonFrutas);
			buttonMercearia.setImageResource(R.drawable.frutas_g);
		}else if(Categories.HIGIENE.toString().equals(cat)){
			ImageButton buttonMercearia = (ImageButton)findViewById(R.id.buttonHigiene);
			buttonMercearia.setImageResource(R.drawable.higiene_g);
		}else if(Categories.OUTROS.toString().equals(cat)){
			ImageButton buttonMercearia = (ImageButton)findViewById(R.id.buttonOutros);
			buttonMercearia.setImageResource(R.drawable.outros_g);
		}
	}
	
	public void catSeleccionada(Categories cat){
		Intent myIntent = new Intent(this, ProductsActivity.class);
		myIntent.putExtra("Listas", listas);
		myIntent.putExtra("Lista", array);
		myIntent.putExtra("NomeLista", nomeLista);
		myIntent.putExtra("Utilizador", utilizador);
		myIntent.putExtra("Categoria", cat.toString());
		startActivityForResult(myIntent, CODE_REQUEST);
	}
	
	public void catMercearia(View v){
		cat = Categories.MERCEARIA;
		catSeleccionada(cat);
	}
	
	public void catBebidas(View v){
		cat = Categories.BEBIDAS;
		catSeleccionada(cat);
	}
	
	public void catFrescos(View v){
		cat = Categories.FRESCOS;
		catSeleccionada(cat);
	}
	
	public void catLact(View v){
		cat = Categories.LATICINIOS;
		catSeleccionada(cat);
	}
	
	public void catCongelados(View v){
		cat = Categories.CONGELADOS;
		catSeleccionada(cat);
	}
	
	public void catFrutas(View v){
		cat = Categories.FRUTAS;
		catSeleccionada(cat);
	}
	
	public void catHigiene(View v){
		cat = Categories.HIGIENE;
		catSeleccionada(cat);
	}
	
	public void catOutros(View v){
		cat = Categories.OUTROS;
		catSeleccionada(cat);
	}
	
	public void conf(View v){
		startActivity(new Intent(this, ConfigurationActivity.class));
	}
	
	public void start(View v) {
		Intent intent = new Intent(this,  MainActivity.class);
		intent.putExtra("Listas", listas);
		intent.putExtra("Utilizador", utilizador);
		startActivity(intent);
	}
	
	public void lists(View v){
		Intent intent = new Intent(this, ListasActivity.class);
		intent.putExtra("Listas", listas);
		intent.putExtra("Utilizador", utilizador);
		startActivity(intent);
	}
	
	public void shop(View v){
		Intent intent = new Intent(this, ShopActivity.class);
		intent.putExtra("Listas", listas);
		intent.putExtra("Utilizador", utilizador);
		startActivity(intent);
	}
}
